/*
 * Copyright (c) 2023 fred
 * Licensed under the Apache License,Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
import { Element } from '../../nodes/Element'
import { PseudoTextElement } from '../../nodes/PseudoTextElement'
import { Tag } from '../../parser/Tag'
import { Evaluator } from '../Evaluator'
export class EvaluatorMatchText extends Evaluator {

  public matches(root: Element, element: Element): boolean {
    if (element instanceof PseudoTextElement) {
      return true
    }
    let textNodes = element.textNodes()
    for(let textNode of textNodes) {
      // let pel = new PseudoTextElement(Tag.valueOf(element.getTagName()),element.baseUri(),element.attributes())
      // textNode.replaceWith(pel)
      // pel.appendChild(textNode)
    }
    return false
  }

  cost(): number {
    // forces first evaluation, which prepares the DOM for later evaluator matches
    return -1
  }

  public toString(): string {
    return `:matchText`
  }

}